﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Trilobita.SAOT.Object
{
    [ServiceContract]
    public interface IWorkflow : IStandardService
    {
        [OperationContract]
        Guid CreateWorkflow(string workflow, Dictionary<string, object> paramters);
        [OperationContract]
        Guid CreateWorkflowByAssembly(string assemblyname, string workflow, Dictionary<string, object> paramters);
        [OperationContract]
        string GetStateName(Guid guid);
        [OperationContract]
        WorkflowEventInformation[] GetAvailableEvents(Guid guid);
        [OperationContract]
        void RaiseEvent(WorkflowEventInformation wfevent, Guid instanceid, object bindobject);
        [OperationContract]
        string GetStateNameByAssembly(string assemblyname, Guid guid);
        [OperationContract]
        WorkflowEventInformation[] GetAvailableEventsByAssembly(string assemblyname, Guid guid);
        [OperationContract]
        void RaiseEventByAssembly(string assemblyname, WorkflowEventInformation wfevent, Guid instanceid, object bindobject);
    }
}
